package amplia.gui;

import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Frame;

import javax.swing.JInternalFrame;
import javax.swing.JTabbedPane;
import javax.swing.JEditorPane;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPanel;
import java.awt.GridBagLayout;
import javax.swing.JTextArea;
import javax.swing.JTable;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import java.awt.Rectangle;

import javax.swing.ButtonGroup;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollBar;
import java.awt.Point;
import java.awt.event.ItemEvent;
import java.util.Vector;

import javax.swing.JFrame;

import amplia.DiagnosticoAssociado;
import amplia.Imagem;

//import com.sun.java_cup.internal.non_terminal;

import unbbayes.prs.Node;
import unbbayes.util.NodeList;

import javax.swing.JSplitPane;
import javax.swing.JList;

public class AmpliaNodeWindow extends JDialog{

    /** Serialization runtime version number */
    private static final long serialVersionUID = 0;
    private Object pai;
    private JPanel jContentPane = null;
    private JTabbedPane jTabbedPane = null;
    private JTextField jTextField = null;
    private JTabbedPane jTabbedPane1 = null;
    private JPanel panelPropBasicas = null;
    private JLabel labelNomeVariavel = null;
    private JTextField textNomeVariavel = null;
    private JLabel labelDescricaoVariavel = null;
    private JTextArea textDescricaoVariavel = null;
    private JLabel labelClasseSemantica = null;
    private JComboBox comboClasseSemantica = null;
    private JLabel labelPropriedades = null;
    private JCheckBox checkEvidencia = null;
    private JLabel labelEvidencia = null;
    private JCheckBox checkDIagnostico = null;
    private JLabel labelDiagnostico = null;
    private JLabel labelTipo = null;
    private JRadioButton radioSimbolico = null;
    private JRadioButton radioNumerico = null;
    private JRadioButton radioUtilidade = null;
    private JRadioButton radioDecisao = null;
    private JRadioButton radioBooleano = null;
    private JLabel labelSimbolico = null;
    private JLabel labelNumerico = null;
    private JLabel labelUtilidade = null;
    private JLabel labelDecisao = null;
    private JLabel labelBoolean = null;
    private JPanel panelAdicionais = null;
    private JLabel labelComentarios = null;
    private JTextArea textComentarios = null;
    private JPanel panelDiagnosticos = null;
    private JPanel panelImagens = null;
    
    private Node nodo;
    private NodeList nodes;
    private JButton botaoGravar = null;
    private JTextArea textDiagnostico = null;
    private JComboBox comoNodoDiagnostico = null;
    private JButton buttonGravaDiagnostico = null;
    private JLabel labelImagem = null;
    private JTextField textTituloImagem = null;
    private JTextArea textObsImagem = null;
    private JTextField textCaminhoImagem = null;
    private JList listImagens = null;
    private JButton botaoAnexar = null;
    private JButton botaoExcluir = null;
    private JButton botaoAdicionarImagem = null;
    private JLabel labelImgAssoc = null;
    private JLabel lblDescricaoImagem = null;
    private JLabel lblCaminhoImagem = null;
    private JLabel lblObsImagem = null;
    public AmpliaNodeWindow(Dimension tamanhoPai, Node no, NodeList nodes) {
        super(new Frame(),"Detalhes do n�"+" - "+no.getName(), false); // trocar para resource (permite internacionalizacao)
        this.nodo = no;
        this.nodes = nodes;
        initialize();
        Container contentPane = getContentPane();
        setSize(tamanhoPai.width/2, tamanhoPai.height/3);
        setLocationRelativeTo(null);
        setVisible(true);
        
        // definindo os valores dos campos
        setValuesToFields();
        setComboDiagnosticos();

    }
    /**
     * This method initializes this
     * 
     */
    private void initialize() {
        //this.setSize(new Dimension(804, 342));
        this.setSize(new Dimension(919, 377));
        this.setContentPane(getJTabbedPane1());
    		
    }
    /**
     * This method initializes jTabbedPane1	
     * 	
     * @return javax.swing.JTabbedPane	
     */
    private JTabbedPane getJTabbedPane1() {
        if (jTabbedPane1 == null) {
            jTabbedPane1 = new JTabbedPane();
            jTabbedPane1.addTab("Propriedades B�sicas", null, getPanelPropBasicas(), null);
            jTabbedPane1.addTab("Informa��es adicionais", null, getPanelAdicionais(), "");
            jTabbedPane1.addTab("Diagn�sticos Associados", null, getPanelDiagnosticos(), null);
            jTabbedPane1.addTab("Imagens", null, getPanelImagens(), null);
        }
        return jTabbedPane1;
    }
    /**
     * This method initializes panelPropBasicas	
     * 	
     * @return javax.swing.JPanel	
     */
    private JPanel getPanelPropBasicas() {
        if (panelPropBasicas == null) {
            labelBoolean = new JLabel();
            labelBoolean.setBounds(new Rectangle(577, 136, 121, 16));
            labelBoolean.setText("Booleano");
            labelDecisao = new JLabel();
            labelDecisao.setBounds(new Rectangle(578, 117, 115, 16));
            labelDecisao.setText("Decis�o");
            labelUtilidade = new JLabel();
            labelUtilidade.setBounds(new Rectangle(577, 98, 128, 16));
            labelUtilidade.setText("Utilidade");
            labelNumerico = new JLabel();
            labelNumerico.setBounds(new Rectangle(578, 78, 95, 16));
            labelNumerico.setText("Num�rico");
            labelSimbolico = new JLabel();
            labelSimbolico.setBounds(new Rectangle(578, 60, 75, 16));
            labelSimbolico.setText("Simb�lico");
            labelTipo = new JLabel();
            labelTipo.setBounds(new Rectangle(555, 15, 37, 16));
            labelTipo.setText("Tipo:");
            labelDiagnostico = new JLabel();
            labelDiagnostico.setBounds(new Rectangle(364, 172, 99, 16));
            labelDiagnostico.setText("Diagn�stico");
            labelEvidencia = new JLabel();
            labelEvidencia.setBounds(new Rectangle(365, 147, 82, 16));
            labelEvidencia.setText("Evid�ncia");
            labelPropriedades = new JLabel();
            labelPropriedades.setBounds(new Rectangle(337, 123, 139, 16));
            labelPropriedades.setText("Propriedades:");
            labelClasseSemantica = new JLabel();
            labelClasseSemantica.setBounds(new Rectangle(336, 13, 115, 16));
            labelClasseSemantica.setText("Classe Sem�ntica:");
            labelDescricaoVariavel = new JLabel();
            labelDescricaoVariavel.setBounds(new Rectangle(16, 57, 171, 16));
            labelDescricaoVariavel.setText("Descri��o da Vari�vel:");
            labelNomeVariavel = new JLabel();
            labelNomeVariavel.setBounds(new Rectangle(16, 10, 121, 16));
            labelNomeVariavel.setText("Nome da Vari�vel:");
            panelPropBasicas = new JPanel();
            panelPropBasicas.setLayout(null);
            panelPropBasicas.add(labelNomeVariavel, null);
            panelPropBasicas.add(getTextNomeVariavel(), null);
            panelPropBasicas.add(labelDescricaoVariavel, null);
            panelPropBasicas.add(getTextDescricaoVariavel(), null);
            panelPropBasicas.add(labelClasseSemantica, null);
            panelPropBasicas.add(getComboClasseSemantica(), null);
            panelPropBasicas.add(labelPropriedades, null);
            panelPropBasicas.add(getCheckEvidencia(), null);
            panelPropBasicas.add(labelEvidencia, null);
            panelPropBasicas.add(getCheckDIagnostico(), null);
            panelPropBasicas.add(labelDiagnostico, null);
            panelPropBasicas.add(labelTipo, null);
            panelPropBasicas.add(getRadioSimbolico(), null);
            panelPropBasicas.add(getRadioNumerico(), null);
            panelPropBasicas.add(getRadioUtilidade(), null);
            panelPropBasicas.add(getRadioDecisao(), null);
            panelPropBasicas.add(getRadioBooleano(), null);
            panelPropBasicas.add(labelSimbolico, null);
            panelPropBasicas.add(labelNumerico, null);
            panelPropBasicas.add(labelUtilidade, null);
            panelPropBasicas.add(labelDecisao, null);
            panelPropBasicas.add(labelBoolean, null);
            panelPropBasicas.add(getBotaoGravar(), null);
            
            // Juntando os RadioButtons
            ButtonGroup grupo = new ButtonGroup();
            grupo.add(radioSimbolico);
            grupo.add(radioNumerico);
            grupo.add(radioUtilidade);
            grupo.add(radioDecisao);
            grupo.add(radioBooleano);
        }
        return panelPropBasicas;
    }
    /**
     * This method initializes textNomeVariavel	
     * 	
     * @return javax.swing.JTextField	
     */
    private JTextField getTextNomeVariavel() {
        if (textNomeVariavel == null) {
            textNomeVariavel = new JTextField();
            textNomeVariavel.setBounds(new Rectangle(14, 28, 207, 21));
        }
        return textNomeVariavel;
    }
    /**
     * This method initializes textDescricaoVariavel	
     * 	
     * @return javax.swing.JTextArea	
     */
    private JTextArea getTextDescricaoVariavel() {
        if (textDescricaoVariavel == null) {
            textDescricaoVariavel = new JTextArea();
            textDescricaoVariavel.setBounds(new Rectangle(15, 76, 289, 160));
            textDescricaoVariavel.setLineWrap(true);
        }
        return textDescricaoVariavel;
    }
    /**
     * This method initializes comboClasseSemantica	
     * 	
     * @return javax.swing.JComboBox	
     */
    private JComboBox getComboClasseSemantica() {
        if (comboClasseSemantica == null) {
            comboClasseSemantica = new JComboBox();
            comboClasseSemantica.setBounds(new Rectangle(331, 30, 163, 26));
        }
        return comboClasseSemantica;
    }
    /**
     * This method initializes checkEvidencia	
     * 	
     * @return javax.swing.JCheckBox	
     */
    private JCheckBox getCheckEvidencia() {
        if (checkEvidencia == null) {
            checkEvidencia = new JCheckBox();
            checkEvidencia.setBounds(new Rectangle(339, 143, 28, 23));
            checkEvidencia.addItemListener(new java.awt.event.ItemListener() {
                public void itemStateChanged(java.awt.event.ItemEvent e) {
                    if (e.getStateChange() == ItemEvent.SELECTED) {
                        setEvidencia(true);
                    }
                    else {
                        setEvidencia(false);
                    }
                }
            });
        }
        return checkEvidencia;
    }
    /**
     * This method initializes checkDIagnostico	
     * 	
     * @return javax.swing.JCheckBox	
     */
    private JCheckBox getCheckDIagnostico() {
        if (checkDIagnostico == null) {
            checkDIagnostico = new JCheckBox();
            checkDIagnostico.setBounds(new Rectangle(339, 167, 28, 23));
            checkDIagnostico.addItemListener(new java.awt.event.ItemListener() {
                public void itemStateChanged(java.awt.event.ItemEvent e) {
                    if (e.getStateChange() == ItemEvent.SELECTED) {
                        setDiagnostico(true);
                    }
                    else {
                        setDiagnostico(false);
                    }
                }
            });
        }
        return checkDIagnostico;
    }
    /**
     * This method initializes radioSimbolico	
     * 	
     * @return javax.swing.JRadioButton	
     */
    private JRadioButton getRadioSimbolico() {
        if (radioSimbolico == null) {
            radioSimbolico = new JRadioButton();
            radioSimbolico.setBounds(new Rectangle(554, 56, 28, 23));
            radioSimbolico.setText("Simb�lico");
            radioSimbolico.setName("teste");
            radioSimbolico.addItemListener(new java.awt.event.ItemListener() {
                public void itemStateChanged(java.awt.event.ItemEvent e) {
                    if (e.getStateChange() == ItemEvent.SELECTED) {
                        setTipo('S');
                    }
                }
            });
        }
        return radioSimbolico;
    }
    /**
     * This method initializes radioNumerico	
     * 	
     * @return javax.swing.JRadioButton	
     */
    private JRadioButton getRadioNumerico() {
        if (radioNumerico == null) {
            radioNumerico = new JRadioButton();
            radioNumerico.setBounds(new Rectangle(554, 75, 28, 23));
            radioNumerico.setName("teste");
            radioNumerico.addItemListener(new java.awt.event.ItemListener() {
                public void itemStateChanged(java.awt.event.ItemEvent e) {
                    if (e.getStateChange() == ItemEvent.SELECTED) {
                        setTipo('N');
                    }
                }
            });
        }
        return radioNumerico;
    }
    /**
     * This method initializes radioUtilidade	
     * 	
     * @return javax.swing.JRadioButton	
     */
    private JRadioButton getRadioUtilidade() {
        if (radioUtilidade == null) {
            radioUtilidade = new JRadioButton();
            radioUtilidade.setSize(new Dimension(28, 23));
            radioUtilidade.setLocation(new Point(554, 94));
            radioUtilidade.addItemListener(new java.awt.event.ItemListener() {
                public void itemStateChanged(java.awt.event.ItemEvent e) {
                    if (e.getStateChange() == ItemEvent.SELECTED) {
                        setTipo('U');
                    }
                }
            });
        }
        return radioUtilidade;
    }
    /**
     * This method initializes radioDecis�o
     * 	
     * @return javax.swing.JRadioButton	
     */
    private JRadioButton getRadioDecisao() {
        if (radioDecisao == null) {
            radioDecisao = new JRadioButton();
            radioDecisao.setSize(new Dimension(28, 23));
            radioDecisao.setLocation(new Point(554, 113));
            radioDecisao.addItemListener(new java.awt.event.ItemListener() {
                public void itemStateChanged(java.awt.event.ItemEvent e) {
                    if (e.getStateChange() == ItemEvent.SELECTED) {
                        setTipo('D');
                    }
                }
            });
        }
        return radioDecisao;
    }
    /**
     * This method initializes radioBooleano	
     * 	
     * @return javax.swing.JRadioButton	
     */
    private JRadioButton getRadioBooleano() {
        if (radioBooleano == null) {
            radioBooleano = new JRadioButton();
            radioBooleano.setSize(new Dimension(28, 23));
            radioBooleano.setLocation(new Point(554, 132));
            radioBooleano.addItemListener(new java.awt.event.ItemListener() {
                public void itemStateChanged(java.awt.event.ItemEvent e) {
                    if (e.getStateChange() == ItemEvent.SELECTED) {
                        setTipo('B');
                    }
                }
            });
        }
        return radioBooleano;
    }
    /**
     * This method initializes panelAdicionais	
     * 	
     * @return javax.swing.JPanel	
     */
    private JPanel getPanelAdicionais() {
        if (panelAdicionais == null) {
            labelComentarios = new JLabel();
            labelComentarios.setBounds(new Rectangle(23, 16, 108, 16));
            labelComentarios.setText("Coment�rios:");
            panelAdicionais = new JPanel();
            panelAdicionais.setLayout(null);
            panelAdicionais.add(labelComentarios, null);
            panelAdicionais.add(getTextComentarios(), null);
        }
        return panelAdicionais;
    }
    /**
     * This method initializes textComentarios	
     * 	
     * @return javax.swing.JTextArea	
     */
    private JTextArea getTextComentarios() {
        if (textComentarios == null) {
            textComentarios = new JTextArea();
            textComentarios.setBounds(new Rectangle(24, 38, 615, 161));
        }
        return textComentarios;
    }
    /**
     * This method initializes panelDiagnosticos	
     * 	
     * @return javax.swing.JPanel	
     */
    private JPanel getPanelDiagnosticos() {
        if (panelDiagnosticos == null) {
            panelDiagnosticos = new JPanel();
            panelDiagnosticos.setLayout(null);
            panelDiagnosticos.add(getTextDiagnostico(), null);
            panelDiagnosticos.add(getComoNodoDiagnostico(), null);
            panelDiagnosticos.add(getButtonGravaDiagnostico(), null);
        }
        return panelDiagnosticos;
    }
    /**
     * This method initializes panelImagens	
     * 	
     * @return javax.swing.JPanel	
     */
    private JPanel getPanelImagens() {
        if (panelImagens == null) {
            lblObsImagem = new JLabel();
            lblObsImagem.setBounds(new Rectangle(526, 131, 187, 16));
            lblObsImagem.setText("Observa��es");
            lblCaminhoImagem = new JLabel();
            lblCaminhoImagem.setBounds(new Rectangle(522, 79, 221, 16));
            lblCaminhoImagem.setText("Caminho para a Imagem");
            lblDescricaoImagem = new JLabel();
            lblDescricaoImagem.setBounds(new Rectangle(522, 28, 229, 16));
            lblDescricaoImagem.setText("Descri��o da Imagem");
            labelImgAssoc = new JLabel();
            labelImgAssoc.setBounds(new Rectangle(344, 25, 158, 16));
            labelImgAssoc.setText("Imagens Associadas");
            labelImagem = new JLabel();
            labelImagem.setBounds(new Rectangle(25, 22, 282, 247));
            labelImagem.setText("");
            panelImagens = new JPanel();
            panelImagens.setLayout(null);
            panelImagens.add(labelImagem, null);
            panelImagens.add(getTextTituloImagem(), null);
            panelImagens.add(getTextObsImagem(), null);
            panelImagens.add(getTextCaminhoImagem(), null);
            panelImagens.add(getListImagens(), null);
            //panelImagens.add(getBotaoGravar(), null);
            panelImagens.add(getBotaoExcluir(), null);
            panelImagens.add(getBotaoAdicionarImagem(), null);
            panelImagens.add(labelImgAssoc, null);
            panelImagens.add(lblDescricaoImagem, null);
            panelImagens.add(lblCaminhoImagem, null);
            panelImagens.add(lblObsImagem, null);
        }
        return panelImagens;
    }
    
    /**
     * This method initializes botaoGravar	
     * 	
     * @return javax.swing.JButton	
     */
    private JButton getBotaoGravar() {
        if (botaoGravar == null) {
            botaoGravar = new JButton();
            //botaoGravar.setBounds(new Rectangle(661, 234, 75, 29)); 
            botaoGravar.setBounds(new Rectangle(655, 247, 75, 29));
            botaoGravar.setText("Gravar");
            botaoGravar.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                  setNome(textNomeVariavel.getText());
                  setDescricao(textDescricaoVariavel.getText());
                  setComentarios(textComentarios.getText());
                  setVisible(false);
                }
            });
        }
        return botaoGravar;
    }
    
    /**
     * This method initializes textDiagnostico  
     *  
     * @return javax.swing.JTextArea    
     */
    private JTextArea getTextDiagnostico() {
        if (textDiagnostico == null) {
            textDiagnostico = new JTextArea();
            textDiagnostico.setBounds(new Rectangle(12, 73, 790, 197));
        }
        return textDiagnostico;
    }
    /**
     * This method initializes comoNodoDiagnostico  
     *  
     * @return javax.swing.JComboBox    
     */
    private JComboBox getComoNodoDiagnostico() {
        if (comoNodoDiagnostico == null) {
            comoNodoDiagnostico = new JComboBox();
            comoNodoDiagnostico.setBounds(new Rectangle(15, 25, 328, 27));
            comoNodoDiagnostico.addItemListener(new java.awt.event.ItemListener() {
                public void itemStateChanged(java.awt.event.ItemEvent e) {
                    try {
                        textDiagnostico.setText(getTextoDiagnostico(comoNodoDiagnostico.getSelectedIndex()));
                        
                    } catch (Exception exception) {
                        System.out.println("Erro:"+exception.getMessage());
                    }
                    
                }
            });
        }
        return comoNodoDiagnostico;
    }
    
    /**
     * This method initializes buttonGravaDiagnostico   
     *  
     * @return javax.swing.JButton  
     */
    private JButton getButtonGravaDiagnostico() {
        if (buttonGravaDiagnostico == null) {
            buttonGravaDiagnostico = new JButton();
            buttonGravaDiagnostico.setBounds(new Rectangle(349, 24, 159, 29));
            buttonGravaDiagnostico.setText("Gravar Diagn�stico");
            buttonGravaDiagnostico.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                  adicionaDiagnostico();
                }
            });
        }
        return buttonGravaDiagnostico;
    }
    
    /**
     * This method initializes textTituloImagem 
     *  
     * @return javax.swing.JTextField   
     */
    private JTextField getTextTituloImagem() {
        if (textTituloImagem == null) {
            textTituloImagem = new JTextField();
            textTituloImagem.setBounds(new Rectangle(518, 44, 301, 28));
        }
        return textTituloImagem;
    }
    /**
     * This method initializes textObsImagem    
     *  
     * @return javax.swing.JTextArea    
     */
    private JTextArea getTextObsImagem() {
        if (textObsImagem == null) {
            textObsImagem = new JTextArea();
            textObsImagem.setBounds(new Rectangle(520, 150, 295, 104));
        }
        return textObsImagem;
    }
    /**
     * This method initializes textCaminhoImagem    
     *  
     * @return javax.swing.JTextField   
     */
    private JTextField getTextCaminhoImagem() {
        if (textCaminhoImagem == null) {
            textCaminhoImagem = new JTextField();
            textCaminhoImagem.setBounds(new Rectangle(519, 98, 301, 28));
        }
        return textCaminhoImagem;
    }
    /**
     * This method initializes listImagens  
     *  
     * @return javax.swing.JList    
     */
    private JList getListImagens() {
        if (listImagens == null) {
            listImagens = new JList();
            listImagens.setBounds(new Rectangle(323, 46, 183, 221));
            DefaultListModel modelo = new DefaultListModel();
            listImagens.setModel(modelo);
            listImagens
                    .addListSelectionListener(new javax.swing.event.ListSelectionListener() {
                        public void valueChanged(javax.swing.event.ListSelectionEvent e) {
                            mostraDadosImagem(listImagens.getSelectedIndex());
                        }
                    });
        }
        return listImagens;
    }

    
    // aplicando os valores definidos pelo usu�rio aos n�s
    private void setNome(String nome) {
        this.nodo.setName(nome);
    }
    
    private void setDescricao(String desc) {
        this.nodo.setDescription(desc);
    }
    
    private void setEvidencia(boolean estado) {
        this.nodo.setNodoEvidencia(estado);
    }
    
    private void setDiagnostico(boolean estado) {
        this.nodo.setNodoDiagnostico(estado);
    }
    
    private void setTipo(char tipo) {
        this.nodo.setTipoNodo(tipo);
    }
    
    private void setComentarios(String coment) {
        this.nodo.setComentarios(coment);
    }
    
    /**
     * Este m�todo define os valores para os campos da tela.
     */

    private void setValuesToFields() {
        textNomeVariavel.setText(this.nodo.getName());
        textDescricaoVariavel.setText(this.nodo.getDescription());
        textComentarios.setText(this.nodo.getComentarios());
        checkDIagnostico.setSelected(this.nodo.isNodoDiagnostico());
        checkEvidencia.setSelected(this.nodo.isNodoEvidencia());
        
        switch (this.nodo.getTipoNodo()) {
             case 'S' : radioSimbolico.setSelected(true); break;
             case 'N' : radioNumerico.setSelected(true); break;
             case 'U' : radioUtilidade.setSelected(true); break;
             case 'D' : radioDecisao.setSelected(true); break;
             case 'B' : radioBooleano.setSelected(true); break;
        }
        
        // Buscando as imagens para a lista de imagens
        this.atualizaListaImagens();   
    }
    
    private void atualizaListaImagens() {
        Vector imagens = this.nodo.getImagens();
        Imagem img;
        
        for (int i=0; i<imagens.size(); i++) {
            img = (Imagem) imagens.get(i);
            
            ((DefaultListModel)(listImagens.getModel())).addElement(img.getTitulo());
        }
        imagens = null;
        img = null;
    }
    
    private void mostraDadosImagem(int index) {
        Vector imagens = this.nodo.getImagens();
        Imagem img;
        
        img = (Imagem) imagens.get(index);
        
        textTituloImagem.setText(img.getTitulo());
        textCaminhoImagem.setText(img.getUrl());
        textObsImagem.setText(img.getComentario());
        labelImagem.setIcon(new ImageIcon(img.getUrl())); // TODO: resolver problema imagens na internet
    }
    
    private void setComboDiagnosticos() {
        Node tmpNode;
        Vector nodeList = new Vector(2);
        
        for (int i = 0; i < nodes.size(); i++) {
           tmpNode = nodes.get(i);
           if (tmpNode.isNodoDiagnostico()) {
               nodeList.add(tmpNode.getName());
               comoNodoDiagnostico.addItem(tmpNode.getName().toString());
           }
        }
    }
    
    private void adicionaDiagnostico( ) {
        this.nodo.addDiagnostico(this.nodes.get(comoNodoDiagnostico.getSelectedIndex()), textDiagnostico.getText());
    }
    
    private String getTextoDiagnostico(int index) {
        Vector tmp = this.nodo.getDiagnosticos();
        if (!tmp.isEmpty()) {
            DiagnosticoAssociado diag = (DiagnosticoAssociado) tmp.get(index);
            return diag.getDiagnostico();
        }
        else {
            return null;
        }
    }
    /**
     * This method initializes botaoExcluir1	
     * 	
     * @return javax.swing.JButton	
     */
    private JButton getBotaoExcluir() {
        if (botaoExcluir == null) {
            botaoExcluir = new JButton();
            botaoExcluir.setBounds(new Rectangle(673, 258, 88, 29));
            botaoExcluir.setText("Excluir");
        }
        return botaoExcluir;
    }
    /**
     * This method initializes botaoAdicionarImagem	
     * 	
     * @return javax.swing.JButton	
     */
    private JButton getBotaoAdicionarImagem() {
        if (botaoAdicionarImagem == null) {
            botaoAdicionarImagem = new JButton();
            botaoAdicionarImagem.setBounds(new Rectangle(586, 258, 88, 29));
            botaoAdicionarImagem.setText("Adicionar");
            botaoAdicionarImagem.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    nodo.addImagem(textTituloImagem.getText(), textCaminhoImagem.getText(), textObsImagem.getText());
                }
            });
        }
        return botaoAdicionarImagem;
    }
    
}  //  @jve:decl-index=0:visual-constraint="10,10" 